package com.intelligence.common.system;

import java.util.Random;

/**
 * @Author : RulerWood
 * @Data : 2024/5/27 - 21:18
 */
public class HexadecimalExchangeUtil {

    /**
     * 将十进制数转化为16进制
     *
     * @param integer 传入一个Integer类型的十进制数组
     * @return 返回一个十六进制的字符串
     */
    public static String exchangeTenToHex(Integer[] integer) {
        //将传进来的十进制数转化为16进制字符串
        StringBuilder stringBuilder = new StringBuilder(integer.length);
        String s = "";
        for (int i = 0; i < integer.length; i++) {
            s = Integer.toString(integer[i], 16);
            if (i == 7 || i == 21 || i == 23) {
                //生成风向(0-360)
                while (true) {
                    if (s.length() < 4) {
                        s = "0" + s;
                    } else {
                        break;
                    }
                }
            } else {
                if (s.length() % 2 != 0) {
                    s = "0" + s;
                }
            }
            System.out.println(integer[i]);
            System.out.println(s);
            System.out.println("-------------------------");
            stringBuilder.append(s);
        }
        return stringBuilder.toString();
    }


    /**
     * 生成酸碱度的方法，用来不定时触发阈值报警功能  PH范围  0-14
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 pH值
     */
    public static Integer generalPHValue() {
        Random random = new Random();
        int i = random.nextInt(100);
        int mini = 0;
        int j = 0;
        for (int i1 = 0; i1 < 2; i1++) {
            if (i1 == 1) {
                if (i == 1) {
                    // 1%概率超出阈值
                    while (j == 0) {
                        i = random.nextInt(14);
                        if (i < 5 || i > 7) {
                            j = 1;
                        }
                    }
                } else {
                    while (j == 0) {
                        //生成正常的值
                        i = random.nextInt(14);
                        if (i >= 5.5 && i <= 7) {
                            j = 1;
                        }
                    }
                }
            } else {
                mini = random.nextInt(10);
            }
        }
        String s = i + "" + mini;
        return Integer.parseInt(s);
    }


    /**
     * 生成风速的方法，用来不定时触发阈值报警功能  m/s  0-12    0-2
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 风速
     */
    public static Integer generalWindSpeedValue() {
        Random random = new Random();
        int i = random.nextInt(100);
        int j = 0;
        if (i == 1) {
            // 1%概率超出阈值
            while (j == 0) {
                i = random.nextInt(13);
                if (i > 2) {
                    j = 1;
                }
            }
        } else {
            while (j == 0) {
                //生成正常的值
                i = random.nextInt(13);
                if (i <= 2) {
                    j = 1;
                }
            }
        }
        return i;
    }


    /**
     * 生成土壤温度的方法，用来不定时触发阈值报警功能  m/s  18-30  0-60
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 土壤湿度
     */
    public static Integer generalSoildMoistureValue() {
        Random random = new Random();
        int i = random.nextInt(100);
        int j = 0;
        if (i == 1) {
            // 1%概率超出阈值
            while (j == 0) {
                i = random.nextInt(60);
                if (i < 18 || i > 30) {
                    j = 1;
                }
            }
        } else {
            while (j == 0) {
                //生成正常的值
                i = random.nextInt(60);
                if (i >= 18 && i <= 30) {
                    j = 1;
                }
            }
        }
        return i;
    }


    /**
     * 生成风向的方法，用来不定时触发阈值报警功能  °  0-360
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 风向
     */
    public static Integer generalWindDirectionValue() {
        Random random = new Random();
        int i = random.nextInt(361);
        return i;
    }


    /**
     * 生成土壤湿度的方法，用来不定时触发阈值报警功能  °  0.6-0.9  60-90
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 土壤湿度
     */
    public static Integer generalSolidityTemperatureValue() {
        Random random = new Random();
        int i = random.nextInt(101);
        int j = 0;
        if (i == 1) {
            // 1%概率超出阈值
            while (j == 0) {
                i = random.nextInt(101);
                if (i < 60 || i > 90) {
                    j = 1;
                }
            }
        } else {
            while (j == 0) {
                //生成正常的值
                i = random.nextInt(101);
                if (i >= 60 && i <= 90) {
                    j = 1;
                }
            }
        }
        return i;
    }


    /**
     * 生成空气温度的方法，用来不定时触发阈值报警功能  °  18-30
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 空气温度
     */
    public static Integer generalAirTemperatureValue() {
        Random random = new Random();
        int i = random.nextInt(100);
        int j = 0;
        if (i == 1) {
            // 1%概率超出阈值
            while (j == 0) {
                i = random.nextInt(60);
                if (i < 18 || i > 30) {
                    j = 1;
                }
            }
        } else {
            while (j == 0) {
                //生成正常的值
                i = random.nextInt(60);
                if (i >= 18 && i <= 30) {
                    j = 1;
                }
            }
        }
        return i;
    }


    /**
     * 生成土壤电导率（盐分）的方法，用来不定时触发阈值报警功能  °  0-20 2-5
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 土壤电导率（盐分）
     */
    public static Integer generalSolidSalinityValue() {
        Random random = new Random();
        int i = random.nextInt(100);
        int j = 0;
        if (i == 1) {
            // 1%概率超出阈值
            while (j == 0) {
                i = random.nextInt(21);
                if (i < 2 || i > 5) {
                    j = 1;
                }
            }
        } else {
            while (j == 0) {
                //生成正常的值
                i = random.nextInt(21);
                if (i >= 2 && i <= 5) {
                    j = 1;
                }
            }
        }
        return i;
    }


    /**
     * 生成空气湿度的方法，用来不定时触发阈值报警功能  °  0-100  60-80
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 空气湿度
     */
    public static Integer generalAirMoistureValue() {
        Random random = new Random();
        int i = random.nextInt(100);
        int j = 0;
        if (i == 1) {
            // 1%概率超出阈值
            while (j == 0) {
                i = random.nextInt(101);
                if (i < 60 || i > 80) {
                    j = 1;
                }
            }
        } else {
            while (j == 0) {
                //生成正常的值
                i = random.nextInt(101);
                if (i >= 60 && i <= 80) {
                    j = 1;
                }
            }
        }
        return i;
    }


    /**
     * 生成气压传感器的方法，用来不定时触发阈值报警功能  °  60-100  80-100
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 气压传感器
     */
    public static Integer generalAirPressureValue() {
        Random random = new Random();
        int i = random.nextInt(100);
        int j = 0;
        if (i == 1) {
            // 1%概率超出阈值
            while (j == 0) {
                i = random.nextInt(101);
                if (i < 80) {
                    j = 1;
                }
            }
        } else {
            while (j == 0) {
                //生成正常的值
                i = random.nextInt(101);
                if (i >= 80) {
                    j = 1;
                }
            }
        }
        return i;
    }


    /**
     * 生成日降雨量的方法，用来不定时触发阈值报警功能  °  0-100   20-60
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 日降雨量
     */
    public static Integer generalRainDownPerDayValue() {
        Random random = new Random();
        int i = random.nextInt(100);
        int j = 0;
        if (i == 1) {
            // 1%概率超出阈值
            while (j == 0) {
                i = random.nextInt(101);
                if (i < 20 || i > 60) {
                    j = 1;
                }
            }
        } else {
            while (j == 0) {
                //生成正常的值
                i = random.nextInt(101);
                if (i >= 20 && i <= 60) {
                    j = 1;
                }
            }
        }
        return i;
    }


    /**
     * 生成光照度的方法，用来不定时触发阈值报警功能  °  10000-15000   0-20000
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 光照度
     */
    public static Integer generalIlluminanceValue() {
        Random random = new Random();
        int i = random.nextInt(100);
        int j = 0;
        if (i == 1) {
            // 1%概率超出阈值
            while (j == 0) {
                i = random.nextInt(20001);
                if (i < 10000 || i > 15000) {
                    j = 1;
                }
            }
        } else {
            while (j == 0) {
                //生成正常的值
                i = random.nextInt(20001);
                if (i >= 10000 && i <= 15000) {
                    j = 1;
                }
            }
        }
        return i;
    }


    /**
     * 生成二氧化碳的方法，用来不定时触发阈值报警功能  °  300-500   0-500
     * 1%概率超出阈值
     *
     * @return Integer 随机数生成的 二氧化碳
     */
    public static Integer generalCarbonDioxideValue() {
        Random random = new Random();
        int i = random.nextInt(100);
        int j = 0;
        if (i == 1) {
            // 1%概率超出阈值
            while (j == 0) {
                i = random.nextInt(501);
                if (i < 300 || i > 500) {
                    j = 1;
                }
            }
        } else {
            while (j == 0) {
                //生成正常的值
                i = random.nextInt(501);
                if (i >= 300) {
                    j = 1;
                }
            }
        }
        return i;
    }


}
